<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class feedback_service{
	private $CI;
	function __construct() { 
		$this->CI = &get_instance();
		$this->CI->load->model('Student_feedback_model');
		$this->CI->load->model('Student_feedback_img_model');
		$this->CI->load->model('Student_feedback_record_model');
		$this->CI->load->model('Supervisor_feedback_model');
		$this->CI->load->model('Supervisor_feedback_img_model');
		$this->CI->load->model('Supervisor_feedback_record_model');
		$this->CI->load->library('ProjectService/admin_service');
	}

	/**  
	* 取出反馈主体
	* @access public 
	* @param  $feedback_type 所属的反馈表（为督导反馈表还是学生信息员反馈表）
	* @param  $feedback_id  反馈id
	* @param  $have_del 是否删除 默认false  未删除  如果传入true 代表要所有的
	* @return array
	*/  
	public function getFeedBack($feedback_type,$feedback_id,$have_del=false) {
		$model=$feedback_type.'_feedback_model';
		$cond=array('id'=>$feedback_id);
		if(!$have_del){
			$cond['del_flag']=CommonStatus::UnDeleted[XPHEnum::Value];
		}
		$feedback=$this->CI->$model->get_single($cond);
		return $feedback;
	}

	/**  
	* 取出反馈主体的record记录
	* @access public 
	* @param  $feedback_type 所属的反馈表（为督导反馈表还是学生信息员反馈表）
	* @param  $feedback_id  反馈id
	* @param  $have_del 是否删除 默认false  未删除  如果传入true 代表要所有的
	* @return array
	*/  
	public function getFeedBackRecord($feedback_type,$feedback_id,$have_del=false) {
		$model=$feedback_type.'_feedback_record_model';
		$table='db_'.(new FeedbackType)->showByIndex($feedback_type,XPHEnum::Remark).'_feedback_record';
		$feedback=$this->getFeedBack($feedback_type,$feedback_id,$have_del);
		if($feedback){
			$connar['cond']=array('feedback_id'=>$feedback_id);
			$connar['join'][0]=array('admin ac',$table.'.creator=ac.id');
			$connar['join'][1]=array('admin aa',$table.'.admin_id=aa.id');
			$connar['join'][2]=array('role r',$table.'.role_id=r.id');
			$connar['items']=$table.".*,ac.username creator_char,aa.username admin_char,r.name role_char ";
			$feedback_record=$this->CI->$model->get_list_full($connar);
			return $feedback_record;
		}
		else{
			return array();
		}
	}

	/**  
	* 取出反馈主体的img
	* @access public 
	* @param  $feedback_type 所属的反馈表（为督导反馈表还是学生信息员反馈表）
	* @param  $feedback_id  反馈id
	* @param  $have_del 是否删除 默认false  未删除  如果传入true 代表要所有的
	* @return array
	*/  
	public function getFeedBackImg($feedback_type,$feedback_id,$have_del=false) {
		$model=$feedback_type.'_feedback_img_model';
		$table='db_'.(new FeedbackType)->showByIndex($feedback_type,XPHEnum::Remark).'_feedback_img';
		$feedback=$this->getFeedBack($feedback_type,$feedback_id,$have_del);
		if($feedback){
			$feedback_img=$this->CI->$model->get_list(array('feedback_id'=>$feedback_id));
			return $feedback_img;
		}
		else{
			return array();
		}
	}

	/**  
	* 保存反馈数据（包括所有反馈）
	* @access public 
	* @param  $feedback_type 所属的反馈表（为督导反馈表还是学生信息员反馈表）
	* @param  $param 保存的数组 array(
	*                    'type'=>
	*                    category=>
	*                    'creator'=>  
	*                    'content'=>
	*                    'dept_name'=>
	*                    'class_name'=>
	*                    'img'=>array()
	* )
	* @return json
	*/  
	public function saveFeedBack($feedback_type,$param) {
		if(isset($param['img'])){
			$img=$param['img'];
		}
		unset($param['img']);

		$model=$feedback_type.'_feedback_model';
		$record_model=$feedback_type.'_feedback_record_model';
		$img_model=$feedback_type.'_feedback_img_model';
		$now=time();

		//角色合法性判断
		if($feedback_type==FeedbackType::Supervisor[XPHEnum::Value]){
			//督导下，发起角色必须为二级教学单位督导或者校督导
			if($param['type']==SupervisorFeedbackType::School[XPHEnum::Value]){
				$role_admin=$this->CI->admin_service->getAdminByRole(WebRole::SchoolSupervisor[XPHEnum::Value],'id');
			}
			else if($param['type']==SupervisorFeedbackType::Secondary[XPHEnum::Value]){
				$role_admin=$this->CI->admin_service->getAdminByRole(WebRole::UnitSupervisor[XPHEnum::Value],'id');
			}

			if(!in_array($param['creator'],$role_admin)){
				return retJson("角色不满足提交反馈要求.", false);
			}
		}
		else if($feedback_type==FeedbackType::Student[XPHEnum::Value]){
			//学校信息员下，发起角色必须为二级教学单位信息员或者校信息员
			if($param['type']==StudentFeedbackType::School[XPHEnum::Value]){
				$role_admin=$this->CI->admin_service->getAdminByRole(WebRole::StudentInfoOfficer[XPHEnum::Value],'id');
			}
			else if($param['type']==StudentFeedbackType::Secondary[XPHEnum::Value]){
				$role_admin=$this->CI->admin_service->getAdminByRole(WebRole::UnitStudentInfoOfficer[XPHEnum::Value],'id');
			}
			
			if(!in_array($param['creator'],$role_admin)){
				return retJson("角色不满足提交反馈要求.", false);
			}
		}

		//现根据角色判断是
		$param['belong']=0;
		//指定role step
		if($param['type']==SupervisorFeedbackType::School[XPHEnum::Value]||$param['type']==StudentFeedbackType::School[XPHEnum::Value]){
			//校级，那么交给管理员
			$param['role_belong']=WebRole::Manage[XPHEnum::Value];
		}
		else if($param['type']==SupervisorFeedbackType::Secondary[XPHEnum::Value]||$param['type']==StudentFeedbackType::Secondary[XPHEnum::Value]){
			//二级单位，交给二级教学单位督导组长
			$param['role_belong']=WebRole::UnitSupervisorGroupLeader[XPHEnum::Value];
		}

		$param['status']=FeedBackStatus::ToAudit[XPHEnum::Value];
		$param['created']=$now;
		$param['del_flag']=CommonStatus::UnDeleted[XPHEnum::Value];
		$id=$this->CI->$model->add($param);

		//图片
		if(isset($img)){
			$this->CI->$img_model->delBatch($this->CI->sqlEscape(" feedback_id=?? ",array($id)));
			$table=(new FeedbackType)->showByIndex($feedback_type,XPHEnum::Remark);
			$default_img_sql=$img_sql=" insert into db_".$table."_feedback_img (feedback_id,img,created) values ";
			foreach ($img as $k => $v) {
				if($default_img_sql!=$img_sql){
					$img_sql.=" , ";
				}
				$img_sql.=$this->CI->sqlEscape(" (??,??,??) ",array($id,$v,$now));
			}
			if($default_img_sql!=$img_sql){
				$this->CI->$img_model->query($img_sql,false);
			}
		}
		
		
		//插入一条反馈记录
		$add=array(
			'feedback_id'=>$id,
			'creator'=>$param['creator'],
			'admin_id'=>0,
			'role_id'=>0,
			'source'=>FeedBackRecordSource::Create[XPHEnum::Value],
			'created'=>$now
			);
		$this->CI->$record_model->add($add);
		return retJson("保存成功.", true,$id);
	}


	/**  
	* 指定解决人员
	* @access public 
	* @param  $feedback_type 所属的反馈表（为督导反馈表还是学生信息员反馈表）
	* @param  $feedback_id  反馈id
	* @param  $belong  指定对象的id
	* @return json
	*/  
	public function assignDealAdmin($feedback_type,$feedback_id,$belong) {
		$model=$feedback_type.'_feedback_model';
		$record_model=$feedback_type.'_feedback_record_model';
		$now=time();

		$feedback=$this->getFeedBack($feedback_type,$feedback_id);
		if(!$feedback){
			return retJson("反馈不存在.", false);
		}
		//做反馈role_step验证，指定处理人员，必须为二级教学单位督导组长，或者管理员才可以操作
		//先检验feedback的role_belong
		if(($feedback['role_belong']!=WebRole::Manage[XPHEnum::Value]&&$feedback['role_belong']!=WebRole::UnitSupervisorGroupLeader[XPHEnum::Value])||$feedback['status']!=FeedBackStatus::ToAudit[XPHEnum::Value]){
			return retJson("反馈不满足转发要求，仅在二级教学单位督导组长或者管理员审核时才可转发.", false);
		}
		//再检查操作人员角色
		if($feedback['role_belong']==WebRole::Manage[XPHEnum::Value]){
			$role_admin=$this->CI->admin_service->getAdminByRole(WebRole::Manage[XPHEnum::Value],'id');
		}
		else if($feedback['role_belong']==WebRole::UnitSupervisorGroupLeader[XPHEnum::Value]){
			$role_admin=$this->CI->admin_service->getAdminByRole(WebRole::UnitSupervisorGroupLeader[XPHEnum::Value],'id');
		}

		if(!in_array(getSess()['id'],$role_admin)){
			return retJson("角色不满足转发反馈要求.", false);
		}
		
		$update=array(
			'id'=>$feedback_id,
			'belong'=>$belong
			);
		$this->CI->$model->update($update);
		//记录
		$add=array(
			'feedback_id'=>$feedback_id,
			'creator'=>getSess()['id'],
			'admin_id'=>$belong,
			'role_id'=>0,
			'source'=>FeedBackRecordSource::Forward[XPHEnum::Value],
			'created'=>$now
			);
		$this->CI->$record_model->add($add);
		return retJson("转发成功.", true);
	}

	/**  
	* 二级单位提交管理员
	* @access public 
	* @param  $feedback_type 所属的反馈表（为督导反馈表还是学生信息员反馈表）
	* @param  $feedback_id  反馈id
	* @return json
	*/  
	public function submitToManage($feedback_type,$feedback_id) {
		$model=$feedback_type.'_feedback_model';
		$record_model=$feedback_type.'_feedback_record_model';
		$now=time();

		//验证反馈状态等
		$feedback=$this->getFeedBack($feedback_type,$feedback_id);
		if(!$feedback){
			return retJson("反馈不存在.", false);
		}
		if($feedback['role_belong']!=WebRole::UnitSupervisorGroupLeader[XPHEnum::Value]||$feedback['status']!=FeedBackStatus::ToAudit[XPHEnum::Value]){
			return retJson("反馈不满足转发要求，仅在二级教学单位督导组长审核时才可提交至管理员.", false);
		}
		//验证人员角色
		$role_admin=$this->CI->admin_service->getAdminByRole(WebRole::UnitSupervisorGroupLeader[XPHEnum::Value],'id');
		if(!in_array(getSess()['id'],$role_admin)){
			return retJson("角色不满足提交反馈至管理员要求.", false);
		}

		//正式操作
		$update=array(
			'id'=>$feedback_id,
			'role_belong'=>WebRole::Manage[XPHEnum::Value]
			);
		$this->CI->$model->update($update);
		//记录
		$add=array(
			'feedback_id'=>$feedback_id,
			'creator'=>getSess()['id'],
			'admin_id'=>0,
			'role_id'=>WebRole::Manage[XPHEnum::Value],
			'source'=>FeedBackRecordSource::Submit[XPHEnum::Value],
			'created'=>$now
			);
		$this->CI->$record_model->add($add);

		return retJson("成功提交至管理员.", true);
	}

	/**  
	* 填写处理意见
	* @access public 
	* @param  $feedback_type 所属的反馈表（为督导反馈表还是学生信息员反馈表）
	* @param  $feedback_id  反馈id
	* @param  $result  指定对象的id
	* @return json
	*/  
	public function writeResult($feedback_type,$feedback_id,$result) {
		$model=$feedback_type.'_feedback_model';
		$record_model=$feedback_type.'_feedback_record_model';
		$now=time();
		
		$feedback=$this->getFeedBack($feedback_type,$feedback_id);
		if(!$feedback){
			return retJson("反馈不存在.", false);
		}
		//反馈状态验证，结合role_belong与belong字段
		// 首先必须二级教学单位督导组长和管理员role_belong才可以填写
		if(($feedback['role_belong']!=WebRole::Manage[XPHEnum::Value]&&$feedback['role_belong']!=WebRole::UnitSupervisorGroupLeader[XPHEnum::Value])||$feedback['status']!=FeedBackStatus::ToAudit[XPHEnum::Value]){
			return retJson("反馈不满足填写要求，仅在二级教学单位督导组长或者管理员审核时才可填写.", false);
		}
		//第二步验证当前belong，三种情况，二级组长下二级组长可以填写，管理员role_belong下管理员可以填写，如果操作用户既不是管理员也不是二级组长，那么id必须等于belong才能填写
		if($feedback['role_belong']==WebRole::Manage[XPHEnum::Value]){
			$role_admin=$this->CI->admin_service->getAdminByRole(WebRole::Manage[XPHEnum::Value],'id');
		}
		else if($feedback['role_belong']==WebRole::UnitSupervisorGroupLeader[XPHEnum::Value]){
			$role_admin=$this->CI->admin_service->getAdminByRole(WebRole::UnitSupervisorGroupLeader[XPHEnum::Value],'id');
		}

		$role_admin[]=$feedback['belong'];

		if(!in_array(getSess()['id'],$role_admin)){
			return retJson("角色不满足填写要求.", false);
		}
		
		//正式操作
		$update=array(
			'id'=>$feedback_id,
			'result'=>$result,
			'status'=>FeedBackStatus::HaveWrite[XPHEnum::Value]
			);
		$this->CI->$model->update($update);
		//记录
		$add=array(
			'feedback_id'=>$feedback_id,
			'creator'=>getSess()['id'],
			'admin_id'=>0,
			'role_id'=>0,
			'source'=>FeedBackRecordSource::DoDeal[XPHEnum::Value],
			'created'=>$now
			);
		$this->CI->$record_model->add($add);
		return retJson("处理意见和结果填写成功.", true);
	}


	/**  
	* 结束反馈
	* @access public 
	* @param  $feedback_type 所属的反馈表（为督导反馈表还是学生信息员反馈表）
	* @param  $feedback_id  反馈id
	* @param  $is_end 是否end  true为是  false为否即为取消结束  默认true
	* @return json
	*/  
	public function endFeedBack($feedback_type,$feedback_id,$is_end=true) {
		$model=$feedback_type.'_feedback_model';
		$record_model=$feedback_type.'_feedback_record_model';
		$now=time();
		
		$feedback=$this->getFeedBack($feedback_type,$feedback_id);
		if(!$feedback){
			return retJson("反馈不存在.", false);
		}
		//反馈状态验证，结合role_belong与belong字段
		// 首先必须二级教学单位督导组长和管理员role_belong才可以结束反馈
		if($is_end){
			if(($feedback['role_belong']!=WebRole::Manage[XPHEnum::Value]&&$feedback['role_belong']!=WebRole::UnitSupervisorGroupLeader[XPHEnum::Value])||$feedback['status']!=FeedBackStatus::ToAudit[XPHEnum::Value]){
				return retJson("反馈不满足要求，仅在二级教学单位督导组长或者管理员审核时才可结束.", false);
			}
		}
		else{
			if(($feedback['role_belong']!=WebRole::Manage[XPHEnum::Value]&&$feedback['role_belong']!=WebRole::UnitSupervisorGroupLeader[XPHEnum::Value])||$feedback['status']!=FeedBackStatus::End[XPHEnum::Value]){
				return retJson("反馈不满足要求，仅在二级教学单位督导组长或者管理员结束状态才可取消结束.", false);
			}
		}
		//第二步验证当前belong，三种情况，二级组长下二级组长可以填写，管理员role_belong下管理员可以填写，如果操作用户既不是管理员也不是二级组长，那么id必须等于belong才能填写
		if($feedback['role_belong']==WebRole::Manage[XPHEnum::Value]){
			$role_admin=$this->CI->admin_service->getAdminByRole(WebRole::Manage[XPHEnum::Value],'id');
		}
		else if($feedback['role_belong']==WebRole::UnitSupervisorGroupLeader[XPHEnum::Value]){
			$role_admin=$this->CI->admin_service->getAdminByRole(WebRole::UnitSupervisorGroupLeader[XPHEnum::Value],'id');
		}
		else{
			$role_admin=array();
		}
		if(!in_array(getSess()['id'],$role_admin)){
			return retJson("角色不满足结束或取消结束要求.", false);
		}
		
		//正式操作
		if($is_end){
			$status=FeedBackStatus::End[XPHEnum::Value];
			$source=FeedBackRecordSource::DoEnd[XPHEnum::Value];
		}
		else{
			$status=FeedBackStatus::ToAudit[XPHEnum::Value];
			$source=FeedBackRecordSource::CancelEnd[XPHEnum::Value];
		}
		$update=array(
			'id'=>$feedback_id,
			'status'=>$status
			);
		$this->CI->$model->update($update);
		//记录
		$add=array(
			'feedback_id'=>$feedback_id,
			'creator'=>getSess()['id'],
			'admin_id'=>0,
			'role_id'=>0,
			'source'=>$source,
			'created'=>$now
			);
		$this->CI->$record_model->add($add);
		return retJson("操作成功.", true);
	}

	/**  
	* 设置校领导可见
	* @access public 
	* @param  $feedback_type 所属的反馈表（为督导反馈表还是学生信息员反馈表）
	* @param  $feedback_id  反馈id
	* @return bool
	*/  
	public function setShow($feedback_type,$feedback_id) {
		$model=$feedback_type.'_feedback_model';
		$record_model=$feedback_type.'_feedback_record_model';
		$now=time();
		
		$feedback=$this->getFeedBack($feedback_type,$feedback_id);
		if(!$feedback){
			return retJson("反馈不存在.", false);
		}
		$show=($feedback['show']==CommonWhether::Whether[XPHEnum::Value]?false:true);
		//反馈状态验证，结合role_belong与belong字段
		// 首先必须二级教学单位督导组长和管理员role_belong才可以结束反馈
		if($show){
			if(($feedback['role_belong']!=WebRole::Manage[XPHEnum::Value]&&$feedback['role_belong']!=WebRole::UnitSupervisorGroupLeader[XPHEnum::Value])||$feedback['show']!=CommonWhether::Not[XPHEnum::Value]){
				return retJson("反馈不满足要求,必须未显示时才可显示", false);
			}
		}
		else{
			if(($feedback['role_belong']!=WebRole::Manage[XPHEnum::Value]&&$feedback['role_belong']!=WebRole::UnitSupervisorGroupLeader[XPHEnum::Value])||$feedback['show']!=CommonWhether::Whether[XPHEnum::Value]){
				return retJson("反馈不满足要求,必须已显示时才可设置为未显示", false);
			}
		}
		//第二步验证当前belong，三种情况，二级组长下二级组长可以填写，管理员role_belong下管理员可以填写，如果操作用户既不是管理员也不是二级组长，那么id必须等于belong才能填写
		$role_admin=$this->CI->admin_service->getAdminByRole(WebRole::SupervisorDirector[XPHEnum::Value],'id');
		if(!in_array(getSess()['id'],$role_admin)){
			return retJson("角色不满足结束或取消结束要求.", false);
		}
		
		//正式操作
		if($show){
			$this->CI->$model->update(array('id'=>$feedback_id,'show'=>CommonWhether::Whether[XPHEnum::Value]));
		}
		else{
			$this->CI->$model->update(array('id'=>$feedback_id,'show'=>CommonWhether::Not[XPHEnum::Value]));
		}
		
		return retJson("操作成功.", true);
	}
	
	/**  
	* 判断是否可结束
	* @access public 
	* @param  $feedback_type 所属的反馈表（为督导反馈表还是学生信息员反馈表）
	* @param  $feedback_id  反馈id
	* @return bool
	*/  
	public function checkEnd($feedback_type,$feedback_id) {
		$model=$feedback_type.'_feedback_model';
		$record_model=$feedback_type.'_feedback_record_model';
		$now=time();
		
		$feedback=$this->getFeedBack($feedback_type,$feedback_id);
		if(!$feedback){
			return false;
		}
		//反馈状态验证，结合role_belong与belong字段
		// 首先必须二级教学单位督导组长和管理员role_belong才可以结束反馈
		if(($feedback['role_belong']!=WebRole::Manage[XPHEnum::Value]&&$feedback['role_belong']!=WebRole::UnitSupervisorGroupLeader[XPHEnum::Value])||$feedback['status']!=FeedBackStatus::ToAudit[XPHEnum::Value]){
			return false;
		}
		//第二步验证当前belong，三种情况，二级组长下二级组长可以填写，管理员role_belong下管理员可以填写，如果操作用户既不是管理员也不是二级组长，那么id必须等于belong才能填写
		if($feedback['role_belong']==WebRole::Manage[XPHEnum::Value]){
			$role_admin=$this->CI->admin_service->getAdminByRole(WebRole::Manage[XPHEnum::Value],'id');
		}
		else if($feedback['role_belong']==WebRole::UnitSupervisorGroupLeader[XPHEnum::Value]){
			$role_admin=$this->CI->admin_service->getAdminByRole(WebRole::UnitSupervisorGroupLeader[XPHEnum::Value],'id');
		}
		else{
			$role_admin=array();
		}
		if(!in_array(getSess()['id'],$role_admin)){
			return false;
		}
		return true;
	}

	/**  
	* 判断是否可取消结束
	* @access public 
	* @param  $feedback_type 所属的反馈表（为督导反馈表还是学生信息员反馈表）
	* @param  $feedback_id  反馈id
	* @return bool
	*/  
	public function checkCancelEnd($feedback_type,$feedback_id) {
		$model=$feedback_type.'_feedback_model';
		$record_model=$feedback_type.'_feedback_record_model';
		$now=time();
		
		$feedback=$this->getFeedBack($feedback_type,$feedback_id);
		if(!$feedback){
			return false;
		}
		//反馈状态验证，结合role_belong与belong字段
		// 首先必须二级教学单位督导组长和管理员role_belong才可以结束反馈
		if(($feedback['role_belong']!=WebRole::Manage[XPHEnum::Value]&&$feedback['role_belong']!=WebRole::UnitSupervisorGroupLeader[XPHEnum::Value])||$feedback['status']!=FeedBackStatus::End[XPHEnum::Value]){
			return false;
		}
		//第二步验证当前belong，三种情况，二级组长下二级组长可以填写，管理员role_belong下管理员可以填写，如果操作用户既不是管理员也不是二级组长，那么id必须等于belong才能填写
		if($feedback['role_belong']==WebRole::Manage[XPHEnum::Value]){
			$role_admin=$this->CI->admin_service->getAdminByRole(WebRole::Manage[XPHEnum::Value],'id');
		}
		else if($feedback['role_belong']==WebRole::UnitSupervisorGroupLeader[XPHEnum::Value]){
			$role_admin=$this->CI->admin_service->getAdminByRole(WebRole::UnitSupervisorGroupLeader[XPHEnum::Value],'id');
		}
		else{
			$role_admin=array();
		}
		if(!in_array(getSess()['id'],$role_admin)){
			return false;
		}
		return true;
	}

	/**  
	* 验证二级单位提交管理员
	* @access public 
	* @param  $feedback_type 所属的反馈表（为督导反馈表还是学生信息员反馈表）
	* @param  $feedback_id  反馈id
	* @return json
	*/  
	public function checkSubmitToManage($feedback_type,$feedback_id) {
		$model=$feedback_type.'_feedback_model';
		$record_model=$feedback_type.'_feedback_record_model';
		$now=time();

		//验证反馈状态等
		$feedback=$this->getFeedBack($feedback_type,$feedback_id);
		if(!$feedback){
			return false;
		}
		if($feedback['role_belong']!=WebRole::UnitSupervisorGroupLeader[XPHEnum::Value]||$feedback['status']!=FeedBackStatus::ToAudit[XPHEnum::Value]){
			return false;
		}
		//验证人员角色
		$role_admin=$this->CI->admin_service->getAdminByRole(WebRole::UnitSupervisorGroupLeader[XPHEnum::Value],'id');
		if(!in_array(getSess()['id'],$role_admin)){
			return false;
		}

		return true;
	}

	/**  
	* 验证指定解决人员
	* @access public 
	* @param  $feedback_type 所属的反馈表（为督导反馈表还是学生信息员反馈表）
	* @param  $feedback_id  反馈id
	* @return json
	*/  
	public function checkAssignDealAdmin($feedback_type,$feedback_id) {
		$model=$feedback_type.'_feedback_model';
		$record_model=$feedback_type.'_feedback_record_model';
		$now=time();

		$feedback=$this->getFeedBack($feedback_type,$feedback_id);
		if(!$feedback){
			return false;
		}
		//做反馈role_step验证，指定处理人员，必须为二级教学单位督导组长，或者管理员才可以操作
		//先检验feedback的role_belong
		if(($feedback['role_belong']!=WebRole::Manage[XPHEnum::Value]&&$feedback['role_belong']!=WebRole::UnitSupervisorGroupLeader[XPHEnum::Value])||$feedback['status']!=FeedBackStatus::ToAudit[XPHEnum::Value]){
			return false;
		}
		//再检查操作人员角色
		if($feedback['role_belong']==WebRole::Manage[XPHEnum::Value]){
			$role_admin=$this->CI->admin_service->getAdminByRole(WebRole::Manage[XPHEnum::Value],'id');
		}
		else if($feedback['role_belong']==WebRole::UnitSupervisorGroupLeader[XPHEnum::Value]){
			$role_admin=$this->CI->admin_service->getAdminByRole(WebRole::UnitSupervisorGroupLeader[XPHEnum::Value],'id');
		}

		if(!in_array(getSess()['id'],$role_admin)){
			return false;
		}
		
		return true;
	}

	/**  
	* 获取可分享用户
	* @access public 
	* @param  $feedback_type 所属的反馈表（为督导反馈表还是学生信息员反馈表）
	* @param  $feedback_id  反馈id
	* @param  $admin_id  反馈id
	* @return json
	*/  
	public function getShareAdmin($feedback_type,$feedback_id,$admin_id) {
		$model=$feedback_type.'_feedback_model';
		$record_model=$feedback_type.'_feedback_record_model';
		$now=time();

		$feedback=$this->getFeedBack($feedback_type,$feedback_id);
		if(!$feedback){
			return array();
		}
		
		if($feedback['role_belong']==WebRole::Manage[XPHEnum::Value]){
			$admin=$this->CI->admin_service->getAllAdmin();
		}
		else if($feedback['role_belong']==WebRole::UnitSupervisorGroupLeader[XPHEnum::Value]){
			$self=$this->CI->admin_service->getAdminById($admin_id);
			$admin=$this->CI->admin_service->getAdminByDeptName($self['dept_name']);
		}
		foreach ($admin as $k => $v) {
			if($v['id']==$admin_id){
				unset($admin[$k]);
			}
		}
		return $admin;
	}	


	/**  
	* 设置校领导可见
	* @access public 
	* @param  $feedback_type 所属的反馈表（为督导反馈表还是学生信息员反馈表）
	* @param  $feedback_id  反馈id
	* @return bool
	*/  
	public function checkSetShow($feedback_type,$feedback_id) {
		$model=$feedback_type.'_feedback_model';
		$record_model=$feedback_type.'_feedback_record_model';
		$now=time();
		
		$feedback=$this->getFeedBack($feedback_type,$feedback_id);
		if(!$feedback){
			return false;
		}
		$show=($feedback['show']==CommonWhether::Whether[XPHEnum::Value]?false:true);
		//反馈状态验证，结合role_belong与belong字段
		// 首先必须二级教学单位督导组长和管理员role_belong才可以结束反馈
		if($show){
			if(($feedback['role_belong']!=WebRole::Manage[XPHEnum::Value]&&$feedback['role_belong']!=WebRole::UnitSupervisorGroupLeader[XPHEnum::Value])||$feedback['show']!=CommonWhether::Not[XPHEnum::Value]){
				return false;
			}
		}
		else{
			if(($feedback['role_belong']!=WebRole::Manage[XPHEnum::Value]&&$feedback['role_belong']!=WebRole::UnitSupervisorGroupLeader[XPHEnum::Value])||$feedback['show']!=CommonWhether::Whether[XPHEnum::Value]){
				return false;
			}
		}
		//第二步验证当前belong，三种情况，二级组长下二级组长可以填写，管理员role_belong下管理员可以填写，如果操作用户既不是管理员也不是二级组长，那么id必须等于belong才能填写
		$role_admin=$this->CI->admin_service->getAdminByRole(WebRole::SupervisorDirector[XPHEnum::Value],'id');
		if(!in_array(getSess()['id'],$role_admin)){
			return false;
		}
		
		return true;
	}
	
	
}